package com.wicket.okrframework.integration.dto;

import com.wicket.okrframework.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @desc PerOrgInductionRecordDto
 * @使用场景
 */
@Data
public class PerOrgInductionRecordDto extends BaseDto implements Serializable {

  /**
   * 就职记录ID:
   */
  @NotNull(message = "就职记录ID不能为空")
  @ApiModelProperty("就职记录ID")
  private String inductionRecordId;

  /**
   * 身份人员ID:
   */
  @NotNull(message = "身份人员ID不能为空")
  @ApiModelProperty("身份人员ID")
  private String originalRoleMemberId;

  /**
   * 个人资料记录ID:
   */
  @ApiModelProperty("个人资料记录ID")
  private String personalDataId;

  /**
   * 个人账号ID:
   */
  @ApiModelProperty("个人账号ID")
  private String userId;

  /**
   * 真实姓名:
   */
  @ApiModelProperty("真实姓名")
  private String idCardName;

  /**
   * 用户昵称:
   */
  @ApiModelProperty("用户昵称")
  private String nickName;

  /**
   * 真实头像:
   */
  @ApiModelProperty("真实头像")
  private String userFace;

  /**
   * 职务信息展示:
   */
  @ApiModelProperty("职务信息展示")
  private String positionIdName;

  /**
   * 身份人员编号:
   */
  @ApiModelProperty("身份人员编号")
  private String roleMemberCode;

  /**
   * 就职单位对象实例ID:
   */
  @ApiModelProperty("就职单位对象实例ID")
  private String entityId;

  /**
   * 备注首位字母
   */
  @ApiModelProperty("备注首位字母")
  private String firstLetter;

  /**
   * 就职单位类型实例 ORG:组织 DEPT:部门
   */
  @ApiModelProperty("就职单位类型实例")
  private String inductionUnitTypeCode;

  /**
   * 冗余组织名称
   */
  @ApiModelProperty("冗余组织名称")
  private String organizationName;

  /**
   * 冗余部门名称
   */
  @ApiModelProperty("冗余部门名称")
  private String deptShortName;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    PerOrgInductionRecordDto that = (PerOrgInductionRecordDto) o;
    return (
      inductionRecordId == that.inductionRecordId &&
      originalRoleMemberId == that.originalRoleMemberId &&
      personalDataId == that.personalDataId &&
      userId == that.userId &&
      idCardName == that.idCardName &&
      nickName == that.nickName &&
      userFace == that.userFace &&
      positionIdName == that.positionIdName &&
      roleMemberCode == that.roleMemberCode &&
      entityId == that.entityId &&
      firstLetter == that.firstLetter &&
      inductionUnitTypeCode == that.inductionUnitTypeCode &&
      organizationName == that.organizationName &&
      deptShortName == that.deptShortName
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      inductionRecordId,
      originalRoleMemberId,
      personalDataId,
      userId,
      idCardName,
      nickName,
      userFace,
      positionIdName,
      roleMemberCode,
      entityId,
      firstLetter,
      inductionUnitTypeCode,
      organizationName,
      deptShortName
    );
  }

}
